my ($page, $match, %params) = @_;
my $polls = $IkiWiki::pagestate{$page}{poll};
if (defined $polls and %$polls) {
- my ($match_poll, $match_user, $match_choice) = $match =~ m/^id=(.*?) user=(.*?) choice=(.*?)$/;
- if (exists $polls->{$match_poll}) {
- my %poll = %{$polls->{$match_poll}};
+ my ($match_id, $match_user, $match_choice) = $match =~ m/^id=(.*?) user=(.*?) choice=(.*?)$/;
+ my $match_id_re = IkiWiki::glob2re($match_id?$match_id:'*');
+ my @polls = grep {$_ =~ $match_id_re} (keys %$polls);
+ return IkiWiki::FailReason->new("no poll match id=`$match_id'", $page => $IkiWiki::DEPEND_CONTENT)
+ unless @polls > 0;
+ foreach my $poll (@polls) {
+ my %poll = %{$polls->{$poll}};
my $match_user_re = IkiWiki::glob2re($match_user?$match_user:'*');
my $match_choice_re = IkiWiki::glob2re($match_choice?$match_choice:'*');
while (my ($choice, $data) = each %poll) {
}
}
}
- return IkiWiki::FailReason->new("no user=`$match_user' has voted for choice=`$match_choice'", $page => $IkiWiki::DEPEND_CONTENT);
- }
- else {
- return IkiWiki::FailReason->new("no poll id=`$match_poll'", $page => $IkiWiki::DEPEND_CONTENT);
}
+ return IkiWiki::FailReason->new("no user=`$match_user' has voted for choice=`$match_choice'", $page => $IkiWiki::DEPEND_CONTENT);
}
else {
return IkiWiki::FailReason->new("no poll", $page => $IkiWiki::DEPEND_CONTENT);